package com.xinke.module.system.model.vo.user;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Schema(description = "管理后台 - 菜单树VO")
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class MenuTreeVO {
    /** 菜单ID */
    private Long id;
    /** 父菜单ID */
    private Long pid;
    /** 权限标识 */
    private String authCode;
    /** 组件路径 */
    private String component;
    /** 元数据 */
    private MenuMetaVO meta = new MenuMetaVO();
    /** 菜单名称 */
    private String name;
    /** 路由路径 */
    private String path;
    /** 重定向地址 */
    private String redirect;
    /** 菜单类型 */
    private String type;
    /** 状态 */
    private int status;
    /** 子菜单 */
    private List<MenuTreeVO> children;

    @Schema(description = "管理后台 - 路由元数据配置(vben-admin对应的)")
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @Builder
   public static class MenuMetaVO {
        /** 激活图标 */
        private String activeIcon;
        /** 激活路径 */
        private String activePath;
        /** 固定标签 */
        private Boolean affixTab;
        /** 标签固定顺序 */
        private Integer affixTabOrder;
        /** 徽标内容 */
        private String badge;
        /** 徽标类型 */
        private String badgeType;
        /** 徽标颜色 */
        private String badgeVariants;
        /** 隐藏子菜单 */
        private Boolean hideChildrenInMenu;
        /** 隐藏面包屑 */
        private Boolean hideInBreadcrumb;
        /** 隐藏菜单 */
        private Boolean hideInMenu;
        /** 隐藏标签 */
        private Boolean hideInTab;
        /** 菜单图标 */
        private String icon;
        /** iframe地址 */
        private String iframeSrc;
        /** 页面缓存 */
        private Boolean keepAlive;
        /** 外链地址 */
        private String link;
        /** 最大打开标签数 */
        private Integer maxNumOfOpenTab;
        /** 无需布局 */
        private Boolean noBasicLayout;
        /** 新窗口打开 */
        private Boolean openInNewWindow;
        /** 排序值 */
        private Integer order;
        /** 路由参数 */
        private String query;
        /** 菜单标题 */
        private String title;
    }
}
